fix(tui): never trim the lane dial on missing logins; make lean a real blend - #54
Merged
Conversation
…l blend Two regressions from the #47/#49/#52 window, both hit live: - applyProviderAvailability deleted lanes from the dial, and required EVERY catalog pool connected before any blended lane survived. A catalog carrying the optional OpenRouter pool on a machine without an OpenRouter login therefore lost mixed and every led lane, leaving only gpt-only/claude-only - a missing optional credential nuked the blends between providers that WERE connected. Availability is now an annotation, not a trim: the dial always shows every catalog lane; unusable ones render struck with a '<providers> - not logged in' note and cycling steps past them (laneUsable). A lane needs its policy pools plus the Required pools (pure lanes only their own), so an optional login gates exactly its own lanes. The selection is moved off unusable lanes (clampSel); suggestions skip them (quotaLane); noProviders still guards the accountless case. Fallback rungs on unconnected pools are filtered from the preview and the launch overlay (filterRows), so relief tails degrade instead of naming models omp cannot route, and the relief note only names spill pools a login actually backs. - laneSplit collapsed ox-lean into ('ox','led'), colliding with ox-led: the lean blend was unreachable from the split dial. laneSplit now carries the lane suffix verbatim, the blend dial offers led|lean|only (whatever the catalog serves per lead), and a lead switch re-clamps the blend to a served lane (composeLane) so gpt never lands on a nonexistent gpt-lean.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes the live regression where a machine without an OpenRouter login lost
mixedand every led/only blend, leaving onlygpt-only/claude-only.What happened
applyProviderAvailabilitydeleted lanes from the dial and required every catalog pool connected before any blended lane survived. Once the catalog carried the optional R pool (feat(generate): optional OpenRouter pool R and the ox lanes #47), a missing OpenRouter credential nuked all blends between providers that were connected.ox-leanto the generator butlaneSplitcollapsed it into("ox","led")— colliding withox-led, so the lean blend was unreachable from the split lead/blend dial.New contract
DeepSeek, OpenRouter — not logged innote, and cycling steps past them. A lane needs itsgenLanePoliciespools plus the Required pools (pure lanes only their own) — an optional login gates exactly its own lanes.led | lean | onlyper what the catalog serves; a lead switch re-clamps the blend (composeLane) sogptnever lands on a nonexistentgpt-lean.clampSel), suggestions skip them (quotaLane),noProvidersstill guards the accountless case.filterRowsdrops fallback rungs on unconnected pools from the preview and the launch overlay, so relief tails degrade gracefully instead of naming models omp cannot route; the relief note names only spill pools a login backs.Verification
omp tokengranting only O+A: all five leads visible with the login note, 3×Right pins atclaude-led, blend child intact, persisted state clean.oxlead exposesled lean only, selecting lean persistsox-leanand flips routing to paid-leads/ox-drains.